Tweak startup-notification after the first window
authorAllison Ryan Lortie <desrt@desrt.ca>
Wed, 27 Jan 2016 14:50:42 +0000 (15:50 +0100)
committerAllison Ryan Lortie <desrt@desrt.ca>
Wed, 27 Jan 2016 17:14:40 +0000 (18:14 +0100)
commit0d109867d2f66e986f98aa49222429f29609f509
treefd4debd4d0e9badad440f1b3f72d7c8a86b816e2
parent299b32438d2d0f508183ab557c68d8cab13572fc
Tweak startup-notification after the first window

Presently, Gtk will only send a startup notification completion message
for the first window that is shown.  This is not good for the case of
GtkApplication, where we are expected to participate in
startup-notification for all windows.

We have avoided this problem by manually emitting the startup complete
message from after_emit in GtkApplication.

Unfortunately, this causes problems for windows that are shown with a
delay.  It is also a dirty hack.

The reason for the original behaviour is simple: there is a static
boolean in gtkwindow.c which controls it.  We remove this.

Instead, clear the startup notification ID stored in GDK when sending
the completion message.  GtkApplication will re-set this the next time
an event comes in which needs startup-notification handling.  In the
non-GtkApplication case, newly shown windows will still not send the
message, since the cookie will have been cleared.

Finally, we remove the hack from GtkApplication's after_emit.

This will probably cause some regressions in terms of lingering startup
notification messages.  The correct solution here is to always use
gtk_window_present(), including when merely opening a new document (with
a new tab, for example).

https://bugzilla.gnome.org/show_bug.cgi?id=690791
gdk/x11/gdkdisplay-x11.c
gtk/gtkapplication.c
gtk/gtkwindow.c